____ _ _ _ _
| _ \ ___ | |_ (_) _ __ ___ __| | (_) __ _
| |_) | / _ \ | __| | | | '_ \ / _ \ / _| | | | / _ |
| _ < | __/ | |_ | | | |_) | | __/ | (_| | | | | (_| |
|_| \_\ \___| \__| |_| | .__/ \___| \__,_| |_| \__,_|
|_|
- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b
Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―
Bytecode
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
top
In mwawinformatica, il mwbabytecode è un mwbqlinguaggio intermedio più astratto tra il mwbglinguaggio macchina e il mwbwlinguaggio di programmazione, usato per descrivere le operazioni che costituiscono un mwcaprogramma. à così chiamato perché spesso ogni mwcqcodice operativo occupa un solo mwcgbyte, anche se la lunghezza dell'intera mwcwistruzione può variare perché ogni operazione ha un numero specifico di parametri su cui operare. I parametri di queste operazioni possono consistere di registri o mwdaindirizzi di memoria, un po' come accade per il linguaggio macchina.
Contents
β’ Descrizione
β’ Esempi
β’ Note
β’ Voci correlate
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Descrizione
Un linguaggio intermedio come il bytecode Γ¨ molto utile a coloro che realizzano mwealinguaggi di programmazione perchΓ© riduce la dipendenza dall'mweqhardware e facilita la creazione degli mweginterpreti del linguaggio stesso.
Il bytecode puΓ² anche essere usato come mwfarappresentazione intermedia di un mwfqprogramma da far compilare a un tipo speciale di mwfgcompilatore, chiamato mwfwcompilatore just-in-time il quale traduce il bytecode in linguaggio macchina immediatamente prima dell'mwgaesecuzione del programma stesso, per velocizzarne l'esecuzione.
Un programma in bytecode è eseguito mediante un secondo programma che ne interpreta le istruzioni. Questo mwgginterprete è spesso indicato con il termine mwgwmacchina virtuale, in quanto può essere visto dal mwhaprogrammatore come un mwhqcomputer astratto che realizza al suo interno gran parte delle funzionalità di un computer reale. Questa astrazione consente di scrivere programmi mwhgportabili e cioè architettati in modo tale da poter essere eseguiti su diversi tipi di mwhwsistemi operativi e di mwiaarchitetture hardware. Questo è un vantaggio che hanno anche i mwiqlinguaggi interpretati, tuttavia un interprete di bytecode risulta essere molto più veloce di un interprete di un mwiglinguaggio di programmazione ad alto livello perché è un linguaggio con poche e semplici istruzioni e più vicino al modo di funzionamento dell'hardware (mwiwprocessore e mwjamemoria) del computer.
La prima mwjgimplementazione di compilatore da mwjwcodice sorgente a bytecode, nonchΓ© di interprete di bytecode, Γ¨ stato il sistema mwkaSmalltalk, sviluppato negli mwkqanni 1970 al mwkgcentro di ricerca di Palo Alto della Xerox.
Il linguaggio piΓΉ famoso tra quelli che fanno uso del bytecode Γ¨ mwlaJava. Java ha sia una macchina virtuale (mwlqJava Virtual Machine) che interpreta il codice bytecode, sia un compilatore just-in-time che traduce il bytecode in linguaggio macchina. La piattaforma mwlg.NET, e quindi anche il linguaggio mwlwC#, ha a disposizione tecniche simili a quelle del linguaggio Java. Il linguaggio mwmaGambas fa uso di Bytecode.
Oggi, per migliorare la velocitΓ di esecuzione, anche molti linguaggi dinamici, come mwmgPHP, mwmwPython, mwnaRuby > 1.8 o mwnqTcl fanno uso del bytecode in maniera piΓΉ o meno esplicita a seconda delle implementazioni. Essi traducono il programma in bytecode e poi lo interpretano tramite una macchina virtuale. I linguaggi mwngRuby 1.8 o mwnwPerlcite-ref-1[1], invece, non usano il bytecode, ma traducono il codice in una struttura sintattica ad albero che ricorda molto la rappresentazione intermedia che si usa nei compilatori; tale struttura viene poi usata dall'interprete per eseguire il programma.
Un tipo particolare di bytecode Γ¨ costituito dai mwpqP-Code, che possono occupare piΓΉ di un singolo byte e avere istruzioni di varie dimensioni, un po' come le mwpgopcode di molte mwpwCPU. I p-Code funzionano a un livello di astrazione molto piΓΉ alto rispetto ai bytecode, essi, ad esempio, possono avere operazioni tipo "stampa questa stringa" o "pulisci lo schermo". Sia il linguaggio mwqaBASIC che alcune versioni del mwqqPascal usano i p-Code.
Esempi
β’ Bytecode di mwrqJava, che viene eseguito dalla mwrgJava Virtual Machine
β’ Il mwsaCommon Intermediate Language della piattaforma .NET, eseguito dal mwsqCommon Language Runtime (CLR), la macchina virtuale .NET
β’ CLISP, una implementazione del mwtaCommon Lisp il cui compilatore produce solo bytecode
β’ CMUCL, una implementazione del mwtwCommon Lisp che puΓ² produrre sia bytecode che codice macchina
β’ Il bytecode di molte implementazioni del linguaggio di programmazione mwuqSmalltalk
β’ Il linguaggio mwuwOcaml, opzionalmente il compilatore puΓ² produrre una forma di bytecode molto compatta
β’ La macchina O-code del linguaggio di programmazione mwvgBCPL
β’ La mwwamacchina P-Code dell'mwwqUCSD Pascal, una implementazione particolare del linguaggio mwwgPascal
β’ Il linguaggio di programmazione mwxaIcon
Note
Voci correlate
Collegamenti esterni
β’ citereffoldoc(EN) Denis Howe, Bytecode, in Free On-line Dictionary of Computing. Disponibile con licenza mwbwGFDL
β’ mwcq(EN) Descrizione del bytecode di Java, su javaworld.com. URL consultato il 20 agosto 2005 (archiviato dall'url originale il 6 agosto 2005).
β’ mwcw(EN) Specifica della Java Virtual Machine, su java.sun.com.